Generally, a web service is a software system that supports machine-to-machine interaction over a network. A web service protocol stack is a stack of networking and other protocols that can be used to define, locate, implement, and enable services to interact with one other. Examples of such protocols include the Simple Object Access Protocol (SOAP), which specifies the exchange of structured information for use with web services, and which relies on Extensible Markup Language (XML) for a message format, and on other protocols (e.g., Hypertext Transfer Protocol (HTTP) or Simple Mail Transfer Protocol (SMTP)) for message transmission. Commonly, each web service has an interface described in a machine-understandable format, such as the Web Services Description Language (WSDL). Other systems can use SOAP messages to interact with the web service interface in a manner prescribed by its description.
Other types of protocol stacks can similarly include some processing of message information, wherein the messages are themselves encoded in some fashion, e.g., the Common Object Request Broker Architecture (CORBA) stack.
In the context of message remoting stacks, such as SOAP or CORBA stacks, which allow computers to communicate at a relatively high-level, there are benefits in being able to treat messages as a unit, i.e., taking a message and processing it including any necessary decoding, and providing a result. The Java API for XML Web Services (JAX-WS) specification, which is provided as part of the Java EE platform for use in creating web services, includes some aspects of client and service side dynamic message processing. However, the JAX-WS specification does not provide a means of allowing dynamic message processing at the transport-level of the client and service sides, nor of asynchronous handling of messages at the service-side provider level. These are the general areas that embodiments of the invention are intended to address.